package com.proxy.cglib;

import net.sf.cglib.beans.ImmutableBean;

//通过名字就可以知道，不可变的Bean。ImmutableBean允许创建一个原来对象的包装类，这个包装类是不可变的，任何改变底层对象的包装类操作都会抛出IllegalStateException。但是我们可以通过直接操作底层对象来改变包装类对象。这有点类似于Guava中的不可变视图
public class ImmutableBeanDemo {

	public static void main(String[] args) {
		SampleBean bean = new SampleBean();
	    bean.setValue("Hello world");
	    SampleBean immutableBean = (SampleBean) ImmutableBean.create(bean); //创建不可变类
	    System.out.println(immutableBean.getValue());
	    bean.setValue("Hello world, again"); //可以通过底层对象来进行修改
	    System.out.println(immutableBean.getValue());
	    immutableBean.setValue("Hello cglib"); //直接修改将throw exception
	}

}
